4.5 Навигация между экранами
3 из 3 шагов пройдено

 Навигация между экранами

➡️Ссылка на репозиторий с кодом этого урока

Структура данных стэк

Методы push() и pop() работают по принципу стэка

Такую структуру данных можно представить в виде тарелки с блинами

Блины кладутся и берутся по принципу последний положен – первый съеден LIFO

(Last In First Out)

  • Кидаем на тарелку блин - Navigator.push()
  • Кидаем на тарелку ещё блин - Navigator.push()
  • Берём и хомячим самый верхний блин - Navigator.pop()
  • Берём и хомячим самый верхний блин - Navigator.pop()

Добавим код для экрана SecondScreen

Файл second_screen.dart

import 'package:flutter/material.dart';

class SecondScreen extends StatelessWidget {
  const SecondScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Второй экран'),
        centerTitle: true,
        backgroundColor: Colors.pink[200],
      ),
      body: Container(
        decoration: BoxDecoration(
          gradient: LinearGradient(
            colors: [Color(0xFFF098E7), Color(0xFFFFF36F)],
            begin: Alignment.topLeft,
            end: Alignment.bottomRight,
          ),
        ),
        child: SizedBox(
          width: double.infinity,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () => Navigator.pop(context),
                child: const Text("Вернуться Назад"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Принцип работы навигации такой же как в примере с блинами, только вместо блинов виджеты экранов

 

Стек маршрутизации

Такой способ навигации называется стек маршрутизации.

При переходе на новой экран, он добавляется в стек маршрутизации, а при закрытии удаляется из него.

Навигацией можно управлять более гибко, например, можно заменить текущий экран другим экраном с помощью Navigator.pushReplacement(), но тогда не будет предыдущего экрана и соответственно при возвращении назад будет ошибка.

Ещё с помощью Navigator.popUntil() можно вернуться на любой указанный экран в стеке навигации.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий